home *** CD-ROM | disk | FTP | other *** search
- /*
- * net_client.c
- *
- * Basic client process for time accounting system, network version.
- * This process (and those that are linked to it) are run as commands
- * and send events to the server process.
- */
-
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <netdb.h>
- #include <stdio.h>
- #include "time_entry.h"
-
- main(argc, argv)
- int argc;
- char *argv[];
- {
-
- int skt_id, /* Socket descriptor */
- msg_sock, /* Socket that will accept messages */
- i,j;
-
- EVENT_TYPE event;
-
- struct sockaddr_in sa; /* Socket address structure */
- struct hostent *hp, /* Host entry pointer */
- *gethostbyname(); /* Function to get hostinfo by name */
- char buff[80];
-
- /*
- * Specify the socket domain and type we want...
- */
- skt_id = socket(AF_INET, SOCK_STREAM, 0);
- if(skt_id == -1){
- perror("Can't create socket");
- exit(1);
- }
-
- /*
- * Now set up the address structure and connect to the socket.
- */
- sa.sin_family = AF_INET;
- hp = gethostbyname("utopia"); /* Running server on machine utopia */
- if(!hp){
- perror("Can't find utopia");
- exit(1);
- }
-
- /*
- * Copy the host address from the pointer retruned in the
- * gethostbyname() call into the address member of the
- * socket address structure.
- */
-
- bcopy(hp->h_addr, &sa.sin_addr, hp->h_length);
-
- /*
- * For this example, the port number retruned when the server
- * is started is enterd on the command line for the client.
- * In reality, the port would be assigned or made available
- * in some other manner.
- */
-
- sa.sin_port = htons(atoi(argv[1]));
-
- if(connect(skt_id, &sa, sizeof(sa)) == -1){
- perror("Can't connect to socket");
- exit(1);
- }
-
- build_event(argv[0], &event);
-
- /*
- * Now, send the event
- */
-
- if(write(skt_id, &event, sizeof(event)) != sizeof(event)){
- perror("Write");
- exit(1);
- }
-
- /* Cleanup */
- close(skt_id);
- exit(0);
- }
-